// 创建请求时可以用的配置选项 axios({...})
// 只有 url 是必需的。如果没有指定 method，请求将默认使用 get 方法

const options = {
    url: 'api/mock1', // `url` 是用于请求的服务器 URL
    method: 'post', // 默认是 get
    baseURL: 'http://avengers.local/', // 将自动加在 `url` 前面，除非 `url` 是一个绝对 URL
    transformRequest: [(data) => `（在向服务器发送前，修改请求数据）${JSON.stringify(data)}`], //允许在向服务器发送前，修改请求数据，只能用在 'PUT', 'POST' 和 'PATCH' 这几个请求方法，后面数组中的函数必须返回一个字符串
    transformResponse: [(data) => {
        let obj = JSON.parse(data)
        obj.content = `（在传递给 then/catch 前，修改响应数据）<br>${JSON.parse(data).content}`
        return obj
    }], // 在传递给 then/catch 前，允许修改响应数据
    headers: {
      'Content-Type': 'application/json'
    }, // `headers` 是即将被发送的自定义请求头
    params: { //`params` 是即将与请求一起发送的 URL 参数
        id: 9
    },
    paramsSerializer: null,// 一个负责 `params` 序列化的函数
    data: { //`data` 是作为请求主体被发送的数据
      username: 'Nat'
    },
    timeout: 1000, //请求超时的毫秒数(0 表示无超时时间)，如果请求话费了超过 `timeout` 的时间，请求将被中断
    withCredentials: false, // 跨域请求时是否需要使用凭证，默认的false
    adapter: null, //允许自定义处理请求返回一个 promise
    auth: null, //应该使用 HTTP 基础验证，并提供凭据
    responseType: 'json', //服务器响应的数据类型默认 json
    xsrfCookieName: 'XSRF-TOKEN', // 默认的
    xsrfHeaderName: 'X-XSRF-TOKEN', // 默认的
    onUploadProgress: null, //允许为上传处理进度事件
    onDownloadProgress: null, //允许为下载处理进度事件
    maxContentLength: 2000, // 定义允许的响应内容的最大尺寸
    validateStatus: (status) => { //定义对于给定的HTTP 响应状态码是 resolve 或 reject 
        return status >= 200 && status < 300; // 默认的resolve 在这个条件下是不会reject错误的
    },
    maxRedirects: 5, // 默认的，如果设置为0，将不会 允许 任何重定向
    // httpAgent: new http.Agent({ //用于定义在执行 http 和 https 时使用的自定义代理
    //     keepAlive: false // 默认没有启用
    // }),
    // httpsAgent: new https.Agent({ //用于定义在执行 http 和 https 时使用的自定义代理
    //     keepAlive: false // 默认没有启用
    // }),
    proxy: { //'proxy' 定义代理服务器的主机名称和端口
    //   host: '127.0.0.1',
    //   port: 9000,
      auth: { //`auth` 表示 HTTP 基础验证应当用于连接代理，并提供凭据
        // username: 'mikeymike',
        // password: 'rapunz3l'
      }
    },
    // cancelToken: new CancelToken(function (cancel) {}) //指定用于取消请求的 cancel token
}

export default options